import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

/**
 * @author wzg
 * @date 6/6/21 10:20 PM
 */
@Component
@Aspect
//@Slf4j
public class AnnotationAspect {
    /**
     * 定义切入点，油切入点表达式定义连接点
     * execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)
     * · modifiers-pattern:方法的操作权限。
     * · ret-type-pattern:返回值。
     * · declaring-type-pattern:方法所在的包。
     * · name-pattern:方法名。
     * · param-pattern:参数名。
     * · throws-pattern:异常。
     */
    @Pointcut("execution(* save(..))")
    public void aspect(){}

    /**
     * 定义通知
     * @param joinPoint
     */
    @Before("aspect()")
    public void before(JoinPoint joinPoint)    {

    }
    @After("aspect()")
    public void after(JoinPoint joinPoint){

    }
    @Around("aspect()")
    public void around(JoinPoint joinPoint){}
    @AfterReturning("aspect()")
    public void afterReturn(JoinPoint joinPoint){}
    @AfterThrowing("aspect()")
    public void afterThrow(JoinPoint joinPoint){}
}
